<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>算术运算符</title>
    <!-- 导入第三方JS数学计算框架 -->
    <script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/decimal.js/10.3.1/decimal.min.js" type="application/javascript"></script>
    <!-- <script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/big.js/6.1.1/big.min.js" type="application/javascript"></script> -->
    <script>
      /* 
        算术运算符
        +     加
              1.算术和
              2.字符串拼接
              参与运算的两边只要有一边是字符串就是拼接,两边都是数字类型才是数学加

        -     减
        *     乘
        /     除
              除数不能为0,否则得到Infinity

        %     取余

        拓展:
        1. JS浮点数运算存在精度偏差的问题
           如何解决:
           a.依靠JS内置的功能函数解决
             toFixed(n)   四舍五入保留指定n位有效数字,得到的字符串类型
             ...

           b. 第三方JS框架来解决
              这里以 decimal.js 为例
              https://mikemcl.github.io/decimal.js/

              1).导入框架
              2).使用框架中提供的计算方法来实现精确计算
                语法:   Decimal(第一个数字).add(第二个数字).toNumber()
                add加,sub减,mul乘,div除


        2. 除和取余还能实现数字类型的位数截取     
           例如: 12345

           个位: 12345 % 10 = 5
           十位: parseInt(12345 / 10) % 10
           百位: parseInt(12345 / 100) % 10
           千位: parseInt(12345 / 1000) % 10
           万位: parseInt(12345 / 10000)
      */
      console.log(2 + 3.14)
      //console.log((2 + 3.14).toFixed(2))

      //使用第三方框架解决计算精度丢失问题
      //console.log(Decimal(2).add(3.14).toNumber())
      console.log(Decimal.add(2, 3.14).toNumber())
      //console.log(Big(2).plus(3.14).toNumber())

      console.log(2 - 3)
      console.log(2 * 3)
      console.log(9 / 3)
      console.log(9 % 4)

      console.log(parseInt(12345 / 10000))
    </script>
  </head>
  <body></body>
</html>
